﻿using System;
using System.Data.SqlClient;
using DALHelper.DAL;
using System.Collections.Generic;
using System.ComponentModel;

namespace DALHelper.Business
{
    public class Transaction
    {
        private DALManager m_DataManager;

        #region properties

        [Category("Thông tin đoàn khách")]
        [DisplayName("ID")]
        [Description("Transaction ID.")]
        [ReadOnly(true)]
        public long TransactionID
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Trưởng đoàn")]
        [Description("Tên trưởng đoàn.")]
        public string Representer
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Số người")]
        [Description("Số lượng khách.")]
        [ReadOnly(true)]
        public int GuestCount
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Số phòng")]
        [Description("Số phòng sẽ sử dụng.")]
        [ReadOnly(true)]
        public int RoomCount
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Bắt đầu")]
        [Description("Thời gian bắt đầu ở.")]
        public DateTime StartTime
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Kết thúc")]
        [Description("Thời gian trả phòng.")]
        public DateTime EndTime
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Chi phí")]
        [Description("Tổng chi phí.")]
        [ReadOnly(true)]
        public decimal TotalCost
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Tài khoản")]
        [Description("Tên đăng nhập.")]
        public string UserName
        {
            get;
            set;
        }

        [Category("Thông tin đoàn khách")]
        [DisplayName("Mật khẩu")]
        [Description("Mật khẩu đăng nhập hệ thống.")]
        [PasswordPropertyText(true)]
        public string Password
        {
            get;
            set;
        }

        #endregion

        public Transaction(DALManager dtManager)
        {
            m_DataManager = dtManager;

        }

        public Transaction()
        {
            TotalCost = 0;
            GuestCount = 0;
            RoomCount = 0;
        }

        public void AddTransaction(Transaction t)
        {
            try
            {
                m_DataManager.TransactionDAL.AddTransaction(t);
            }
            catch (SqlException e)
            {
                throw e;
            }
        }

        public void UpdateTransaction(Transaction t)
        {
            try
            {
                m_DataManager.TransactionDAL.UpdateTransaction(t);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public void RemoveTransaction(long lTransID)
        {
            try
            {
                m_DataManager.TransactionDAL.RemoveTransaction(lTransID);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public Transaction QueryTransaction(long lTrans)
        {
            return m_DataManager.TransactionDAL.QueryTransaction(lTrans);
        }

        public IEnumerable<TransDetail> QueryTransactionDetail(long lTrans)
        {
            return m_DataManager.TransactionDAL.QueryTransactionDetail(lTrans);
        }

        public IEnumerable<Transaction> GetInfoTrans(string sPresenter)
        {
            try
            {
                return m_DataManager.TransactionDAL.GetInfoTrans(sPresenter);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
    }
}
